package com.hd.service;

import java.io.Serializable;
import java.util.List;

public interface BaseService<T, PK extends Serializable> {
	/**
	 * 通过实体类名查询所有数据
	 * @param tableSimpleName 实体类名
	 * @return
	 * @throws Exception
	 */
	public List<T> getAllList(String tableSimpleName) throws Exception;
	
	/**
	 * 条件查询一条数据
	 * @param tableSimpleName 实体类名
	 * @param columns  属性名
	 * @param values 属性值
	 * @return
	 * @throws Exception
	 */
	public T getUnique(String tableSimpleName, String[] columns, Object[] values) throws Exception;
	
	/**
	 * 条件查询多条数据
	 * @param tableSimpleName 实体类名
	 * @param columns  属性名
	 * @param values 属性值
	 * @return
	 * @throws Exception
	 */
	public List<T> findByWhere(String tableSimpleName, String[] columns, Object[] values) throws Exception;
	
	/**
	 * 查询总记录数
	 * @param tableSimpleName 实体类名
	 * @return
	 * @throws Exception
	 */
	public List<T> getCount(String tableSimpleName) throws Exception;
	
	/**
	 * 添加
	 * @param bean
	 * @return
	 * @throws Exception
	 */
	public Serializable add(T bean) throws Exception;
	
	/**
	 * 添加/修改
	 * @param bean
	 * @throws Exception
	 */
	public void saveOrUpdate(T bean) throws Exception;
	
	/**
	 * 刪除
	 * @param bean
	 * @throws Exception
	 */
	public void delete(T bean) throws Exception;
	/**
	 * 修改
	 * @param bean
	 * @throws Exception
	 */
	public void update(T bean) throws Exception;
	
	/**
	 * 获取一条记录
	 * @param obj
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public T getBean(final Class<T> obj, PK id) throws Exception;
}
